package com.zzg.pattern.association;

import java.util.ArrayList;
import java.util.List;
/**
 * 
 * @ClassName:  Employee 组合模式   
 * @Description:用于表示具有层次结构的数据,组合模式需要定义 add(node)、remove(node)、getChildren() 这些方法 。 
 * @author: 世纪伟图 -zzg
 * @date:   2019年2月12日 下午3:28:26   
 *     
 * @Copyright: 2019 www.digipower.cn 
 * 注意：本内容仅限于深圳市世纪伟图科技开发有限公司内部使用，禁止用于其他的商业目的
 */
public class Employee {
	private String name;
	private String dept;
	private int salary;
	private List<Employee> subordinates; // 下属

	public Employee(String name, String dept, int sal) {
		this.name = name;
		this.dept = dept;
		this.salary = sal;
		subordinates = new ArrayList<Employee>();
	}

	public void add(Employee e) {
		subordinates.add(e);
	}

	public void remove(Employee e) {
		subordinates.remove(e);
	}

	public List<Employee> getSubordinates() {
		return subordinates;
	}

	public String toString() {
		return ("Employee :[ Name : " + name + ", dept : " + dept + ", salary :" + salary + " ]");
	}

	public static void main(String[] args) {
		Employee manager = new Employee("经理", "世纪位图", 10000);
		
		Employee developer = new Employee("开发", "世纪位图", 1000);
		
		Employee test = new Employee("测试", "世纪位图", 800);
		manager.add(developer);
		manager.add(test);
		
		System.out.println(manager.toString());
		
	}

}
